<?php
/**
 * DBShop 电子商务系统
 *
 * ==========================================================================
 * @link      https://www.dbshop.net/
 * @copyright 北京珑大钜商科技有限公司，并保留所有权利。
 * @license   https://www.dbshop.net/license.html License
 * ==========================================================================
 *
 * @author    静静的风 <baron@loongdom.cn>
 *
 */

namespace Admin\Filter;

use Imagine\Gd\Imagine;
use Laminas\Filter\AbstractFilter;

/**
 * 图片重新生成
 */
class ImageRegenerate extends AbstractFilter
{
    public function __construct($options = [])
    {

    }

    /**
     * 将图片重新生成一次，出于安全考虑对上传到服务器的图片进行一次处理（避免图片中带有漏洞代码），如果图片做了缩微图处理，则不需要使用本过滤
     * @param $value
     * @return array|mixed
     */
    public function filter($value)
    {
        $image = $value['tmp_name'];

        if (substr($image, -4) == '.ico') return $value;

        try {
            $imagine = new Imagine();
            $imagine->open($image)->save($image, ['jpeg_quality' => 100]);
        } catch (\Exception $e) {
            @unlink($image);
            $value = [];
        }
        return $value;
    }
}